import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';
import { UserService } from './user.service'
/* 
- 创建模块命令
nest g module user
nest g controller user
nest g service user

- 导入service文件

- 请求传参
    - query参数  @Query
        获取 url?id=dzm 携带的参数，通常是 get 请求
    - param参数  @Param
        获取 url/1005  动态参数  通常是post请求
    - body参数  @Body
        获取请求体参数   通常是post请求
        

- 总结：Nest请求参数装饰器
@Request()、@Req()   请求对象
@Response()、@Res()  响应对象
@Headers(key,value)  请求头参数
@Next()              类比koa、express的next()
@Session()           请求携带的session
@Param(key:value)    请求携带的动态参数
@Body(key:value)     请求体参数
@Query(key:value)    url后面拼接的参数

文档 https://nest.nodejs.cn/recipes/hot-reload
*/

@Controller('user')
export class UserController {
    constructor (private readonly userService:UserService){
        // nest内置的语法糖 等价于 this.userService = new UserService()
    }
    @Get('/info')
    getInfo(): string {
        return 'this is userInfo~';
    }

    @Get('/list')
    getList(@Query()query:Record<string,any>): any {
        return this.userService.getUserList();
    }

    @Post('/add')
    addUser():any{
        return this.userService.addUser()
    }

    @Get('/query')
    testQuery(@Query()query:Record<string,any>): any {
        let newQuery = JSON.stringify(query)
        return newQuery;
    }

    @Post('/param/:userId')
    testParam(@Param()param:Record<string,any>):any{
        console.log(param);
        return {
            code:0,
            message:"请求成功",
            data:param
        }
    }

    @Post('/body')
    testBody(@Body()body:Record<string,any>):any{
        console.log(body);
        return {
            code:0,
            message:"请求成功",
            data:body
        }
    }
}
